spark-submit提交PySpark任务py-files参数

目的

将pyspark任务提交到Spark on Yarn集群时,可能遇到依赖缺失的情况,使用py-files参数可以传依赖文件到集群中,解决依赖缺失的问题。

个别依赖py文件

只有几个依赖文件时,可以使用“,”分隔方式指定。

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --py-files dep1.py,dep2.py \
  spark-app.py

子模块

当依赖存在子模块时,可以将依赖打成一个zip包,比如项目目录结构为:

my-spark-app
│  config.py
│  spark-app.py
│
└─sub_module
        sub_test1.py
        sub_test2.py
        __init__.py

使用以下命令将依赖“config.py,sub_module”打到同一个压缩包中:

cd xxx/my-spark-app
zip -r -q dependence.zip config.py sub_module

然后使用提交命令:

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --py-files denpendence.zip \
  spark-app.py

整个环境

如果想把本地开发环境依赖整体打包可以使用命令:

cd xxx/python3.6/site-packages
zip -r -q dependence.zip *

然后使用提交命令:

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --py-files denpendence.zip \
  spark-app.py

然而经测试denpendence.zip中的egg依赖模块是无法引用的,可以单独将egg依赖模块提出来,添加在py-files参数后面:

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --py-files denpendence.zip,hdfs-2.5.8-py3.6.egg \
  spark-app.py

参考资料

python - I can't seem to get --py-files on Spark to work - Stack Overflow

Copyright © dalongm.top 2020 - 2021 all right reserved,powered by Gitbook修改时间: 2020-12-17 15:59:35

results matching ""

    No results matching ""